import java.util.Scanner;
class SeqStack {
    // 栈顶指针，初始值 -1 表示栈为空
    private int top;
    // 用于存储栈元素的数组
    private int[] stack;
    // 栈的最大容量
    private int maxSize;

    // 构造函数，用于初始化栈
    // 参数 size 表示栈的最大容量
    public SeqStack(int size) {
        // 初始化最大容量
        maxSize = size;
        // 为栈分配指定大小的数组空间
        stack = new int[maxSize];
        // 初始化栈顶指针为 -1
        top = -1;
    }

    // 判断栈是否为空
    // 如果栈顶指针为 -1，则表示栈为空，返回 true；否则返回 false
    public boolean isEmpty() {
        return top == -1;
    }

    // 判断栈是否已满
    // 如果栈顶指针等于最大容量减 1，则表示栈已满，返回 true；否则返回 false
    public boolean isFull() {
        return top == maxSize - 1;
    }

    // 入栈操作，将元素压入栈顶
    // 参数 value 是要入栈的元素
    public void push(int value) {
        // 检查栈是否已满
        if (isFull()) {
            // 若栈已满，输出提示信息
            System.out.println("Stack is full!");
            // 结束方法
            return;
        }
        // 先将栈顶指针加 1
        // 再将元素存入栈顶位置
        stack[++top] = value;
    }

    // 出栈操作，从栈顶弹出元素
    public int pop() {
        // 检查栈是否为空
        if (isEmpty()) {
            // 若栈为空，输出提示信息
            System.out.println("Stack is empty!");
            // 返回 -1 表示出栈失败
            return -1;
        }
        // 先返回栈顶元素
        // 再将栈顶指针减 1
        return stack[top--];
    }
}

public class stack {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 提示用户输入一个非负十进制整数
        System.out.print("请输入一个非负十进制整数: ");
        // 读取用户输入的十进制整数
        int decimal = scanner.nextInt();
        // 提示用户输入要转换的进制（2、8 或 16）
        System.out.print("请输入要转换的进制 (2, 8, 16): ");
        int base = scanner.nextInt();
        scanner.close();

        // 创建一个容量为 100 的顺序栈对象
        SeqStack stack = new SeqStack(100);
        // 保存要转换的十进制数
        int num = decimal;
        // 当 num 大于 0 时，进行循环
        while (num > 0) {
            // 计算 num 除以目标进制的余数
            int remainder = num % base;
            // 将余数压入栈中
            stack.push(remainder);
            // 将 num 除以目标进制，更新 num 的值
            num /= base;
        }

        // 输出转换前的十进制数和目标进制信息
        System.out.print(decimal + " 转换为 " + base + " 进制的结果是: ");
        // 当栈不为空时，进行循环
        while (!stack.isEmpty()) {
            // 从栈顶弹出一个元素
            int digit = stack.pop();
            // 如果弹出的元素小于 10
            if (digit < 10) {
                // 直接输出该元素
                System.out.print(digit);
            } else {
                // 如果弹出的元素大于等于 10，将其转换为对应的字母（A - F）并输出
                System.out.print((char) ('A' + digit - 10));
            }
        }
        System.out.println();
    }
}